From 4c66e13b8a59ef62602810634ae2e824a2bcc720 Mon Sep 17 00:00:00 2001 From: robertl Date: Tue, 31 Jan 2006 03:15:18 +0000 Subject: [PATCH] Quick fix to keep the trunk running while I continue the USB rework. --- jeeps/gpsapp.c | 7 ++++++- jeeps/gpsusbread.c | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/jeeps/gpsapp.c b/jeeps/gpsapp.c index a2f0d3bca..a77cd12ec 100644 --- a/jeeps/gpsapp.c +++ b/jeeps/gpsapp.c @@ -679,11 +679,16 @@ int32 GPS_A100_Get(const char *port, GPS_PWay **way, int (*cb)(int, GPS_PWay *)) { if(!((*way)[i]=GPS_Way_New())) return MEMORY_ERROR; - +again: if(!GPS_Packet_Read(fd, &rec)) return gps_errno; if(!GPS_Send_Ack(fd, &tra, &rec)) return gps_errno; +/* Temp: just retry on read error. */ + if (rec->n == 0) { + goto again; + } + switch(gps_waypt_type) { case pD100: diff --git a/jeeps/gpsusbread.c b/jeeps/gpsusbread.c index cff319a23..14a12ccfc 100644 --- a/jeeps/gpsusbread.c +++ b/jeeps/gpsusbread.c @@ -35,6 +35,13 @@ int32 GPS_Packet_Read_usb(int32 fd, GPS_PPacket *packet) memset(&pkt, 0, sizeof(pkt)); n = gusb_cmd_get(&pkt, sizeof(pkt)); + if ( n <= 0 ) { +// FIXME: revisit why we're intermittend getting read errors here... +// fprintf(stderr, "Eeek %d\n", n); + (*packet)->n = (UC) 0; + return n; + } + if (1 && gps_show_bytes) { GPS_Diag("\nRx Data:[%d]",n); for (i = 0; i < n; i++) -- 2.30.2